package net.lab1024.sa.admin.module.upstream.api.painet.response;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonSetter;
import lombok.Data;

import java.util.List;

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class BoxListResponse {

    /** 盒子列表 */
    @JsonSetter("boxes")
    private List<Box> boxList;

    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Box {
        /** 盒子ID */
        @JsonSetter("boxId")
        private String boxId;
        /** 供应商盒子ID */
        @JsonSetter("supplierBoxId")
        private String supplierBoxId;
        /** 在线状态 在线/离线 */
        @JsonSetter("online")
        private String online;
        /** TCP的NAT类型 */
        @JsonSetter("tcpNatType")
        private Integer tcpNatType;
        /** 公网ip */
        @JsonSetter("publicIp")
        private String publicIp;
        /** 运营商 */
        @JsonSetter("isp")
        private String isp;
        /** 省份 */
        @JsonSetter("province")
        private String province;
        /** 城市 */
        @JsonSetter("city")
        private String city;
        /** cpu核心数 */
        @JsonSetter("cpuCores")
        private Integer cpuCores;
        /** 内存大小 */
        @JsonSetter("memorySize")
        private Long memorySize;
        /** 磁盘信息 */
        @JsonSetter("diskInfos")
        private List<DiskInfo> diskInfos;
        /** 系统 */
        @JsonSetter("os")
        private String os;
        /** 流程状态 */
        @JsonSetter("processStatus")
        private String processStatus;
        /** 计划任务 */
        @JsonSetter("planTask")
        private String planTask;
        /** 压测带宽 */
        @JsonSetter("pressBandwidth")
        private Double pressBandwidth;
        /** upnp启用状态 */
        @JsonSetter("upnp")
        private Boolean upnp;
        /** 没有部署原因 */
        @JsonSetter("notDeployReason")
        private String notDeployReason;
        /** 上报带宽 */
        @JsonSetter("reportUpBandwidth")
        private Double reportUpBandwidth;
    }

    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class DiskInfo {
        /** 磁盘大小 */
        @JsonSetter("diskSize")
        private Long diskSize;
    }
}
